#include <ros/ros.h>

// 需求：输出日志
/*
    步骤:
    1.导包
    2.初始化 ROS 节点
    3.日志输出
*/

int main(int argc, char *argv[])
{
    // 设置中文，防止乱码   setlocale(LC_CTYPE, "zh_CN.utf8")
    setlocale(LC_ALL, "");
    // 初始化 ROS 节点
    /*
        argc : 表示命令行中参数的个数
            它是一个整数，包含了程序名本身（argv[0]）和其他用户传入的参数（argv[1] 到 argv[argc-1]）

        argv : 是一个数组，包含了命令行传入的所有参数（包括程序名称）
            包含了从命令行传入的所有参数。argv[0] 是程序的名称，而 argv[1] 到 argv[argc-1] 是随程序一起传递的实际参数

        "first_ros" : 节点名称。名称必须是基名，即。它不能包含名称空间(唯一性)

        options : [可选]启动节点的选项（来自\ref ros::init_options的一组位标志）
            节点名称唯一，使同一个节点不能重复启动，当有重名的节点启动时，之前的节点会被关闭
            （避免节点重名）
    */
    ros::init(argc, argv, "first_ros_cpp", ros::init_options::AnonymousName);

    // 输出日志
    ROS_INFO("first_ros_project");

    
    return 0;
}

// 配置CMakeLists.txt
/*
    add_executable：这个命令用来创建一个可执行文件。它指定了 ROS 包中 C++ 源代码文件，并生成一个可执行文件
        add_executable(节点名称 src/C++源文件名.cpp)

    target_link_libraries：这个命令指定了你的可执行文件依赖的库。在这里，${catkin_LIBRARIES} 是一个变量，
    它包含了你使用的 ROS 包的所有依赖库，通常是 ROS 提供的标准库
        target_link_libraries(节点名称
        ${catkin_LIBRARIES}
        )
*/
